﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;

namespace DAO
{
    public class HinhAnh_DAO
    {

        BanHang_LinQDataContext db = new BanHang_LinQDataContext();

        /// <summary>
        /// Phương thức lấy danh sách khuyến mãi
        /// </summary>
        /// <returns></returns>
        public List<HinhAnh> LayDanhSach_HinhAnh()
        {
            return db.HinhAnhs.Where(ha => ha.isDelete == 0).ToList();
        }

        /// <summary>
        /// Phương thức lấy thông tin của một hình ảnh
        /// </summary>
        /// <param name="mahinhanh"></param>
        /// <returns></returns>
        public List<HinhAnh> LayThongTin_HinhAnh(int mahinhanh)
        {
            return db.HinhAnhs.Where(ha => ha.MaHinhAnh == mahinhanh && ha.isDelete == 0).ToList();
        }

        /// <summary>
        /// Phương thức thêm một hình ảnh mới
        /// </summary>
        /// <param name="hinhanh"></param>
        /// <returns></returns>
        public bool Them_HinhAnh(HinhAnh hinhanh)
        {
            try
            {
                db.HinhAnhs.InsertOnSubmit(hinhanh);
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Phương thức thêm một hình ảnh mới bằng proc 
        /// </summary>
        /// <param name="hinhanh"></param>
        /// <returns></returns>
        public bool Them_HinhAnh(int mahinhanh, string duongdan, int loaihinh)
        {
            try
            {
                string sql = "insert into HinhAnh(MaHinhAnh, DuongDan, LoaiHinh, IsDelete) values("+mahinhanh +", '"+duongdan+"',"+loaihinh.ToString()+",  0)";
                db.ExecuteQuery<HinhAnh>(sql);
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        ///  Phương thức xóa một hình ảnh
        /// </summary>
        /// <param name="hinhanh"></param>
        /// <returns></returns>
        public bool Xoa_HinhAnh(HinhAnh hinhanh)
        {
            try
            {
                HinhAnh kq = db.HinhAnhs.SingleOrDefault(ha => ha.MaHinhAnh == hinhanh.MaHinhAnh && ha.isDelete == 0);
                db.HinhAnhs.DeleteOnSubmit(kq);
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Phương thức sửa một hình ảnh
        /// </summary>
        /// <param name="hinhanh"></param>
        /// <returns></returns>
        public bool Sua_HinhAnh(HinhAnh hinhanh)
        {
            try
            {
                HinhAnh kq = db.HinhAnhs.SingleOrDefault(ha => ha.MaHinhAnh == hinhanh.MaHinhAnh && ha.isDelete == 0);
                kq.DuongDan = hinhanh.DuongDan;
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }




        ///////////////////////////////chức năng admin
        public bool Backup(string duongdan)
        {
            try
            {
                string sql = "BACKUP DATABASE DBBanHang TO DISK = '"+duongdan +"'";
                db.ExecuteQuery<HinhAnh>(sql);
                return true;
            }
            catch
            {
                return false;
            }
        }

        ///////////////////////////////chức năng admin
        public bool Restore(string duongdan)
        {
            try
            {
                DataProvider db1 = new DataProvider();
                string sql = "ALTER DATABASE DBBanHang SET OFFLINE WITH ROLLBACK IMMEDIATE use master RESTORE DATABASE [DBBanHang] FROM DISK = '" + duongdan + "'";
                db1.ExecuteNonQuery_Restore(sql);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}
